package ar.edu.utn.frsf.tpae.a2013.g04.presentation.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.event.ActionEvent;

import ar.edu.utn.frsf.tpae.a2013.g04.persistence.model.CentroCosto;
import ar.edu.utn.frsf.tpae.a2013.g04.persistence.model.Empleado;
import ar.edu.utn.frsf.tpae.a2013.g04.presentation.util.ServiceLocator;
import ar.edu.utn.frsf.tpae.a2013.g04.service.SolicitudGastoService;

@ManagedBean(name="solicitarAprobacionBean")
@RequestScoped
public class SolicitarAprobacionBean implements Serializable{
	
	private static final long serialVersionUID = -1326859015638045352L;
	@ManagedProperty(value="#{usuarioBean.user}")
	private Empleado empleado;
	private Integer centroCostoID;
	private String descripcion;
	private Double importe;
	private Map<Integer, CentroCosto> ccomap;
	
	@PostConstruct
	public void init() {
		descripcion = "Inserte descripcion";
		centroCostoID = null; 
		importe = null;
	}
	
	public List<CentroCosto> getCentroCostoList(){
		try{
			ccomap = new HashMap<Integer, CentroCosto>();
			List<CentroCosto> ccolist = ServiceLocator.getCentroCostoService().listar();
			for(CentroCosto q:ccolist){
				ccomap.put(q.getId(),q);
			}
			return new ArrayList<CentroCosto>(ccomap.values());
		}
		catch(RuntimeException e){
			
			//TODO Me morfo la excepcion
		}
		return null;
	}
	
	public String enviar(ActionEvent actionEvent) {
		try{
			SolicitudGastoService sol = ServiceLocator.getSolicitudGastoService();
			sol.nuevaSolicitudGasto(ccomap.get(centroCostoID), descripcion, empleado, importe);
			return "empleado";
		}
		catch(RuntimeException e){
			System.out.println("La cagada");
			System.out.println(empleado.getApellido());
			
		}
		return null;
	}
	
	public Empleado getEmpleado() {
		return empleado;
	}
	public void setEmpleado(Empleado empleado) {
		this.empleado = empleado;
	}

	public Integer getCentroCostoID() {
		return centroCostoID;
	}

	public void setCentroCostoID(Integer centroCostoID) {
		this.centroCostoID = centroCostoID;
	}
	
	public String getDescripcion() {
		return descripcion;
	}
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	public Double getImporte() {
		return importe;
	}
	public void setImporte(Double importe) {
		this.importe = importe;
	}
		
}
